package com.cspm.ahjy.bc.office.util;

import java.text.DecimalFormat;

import org.springframework.util.StringUtils;

/**
 * word中的进制转换
 * 
 * @author ServerZhang
 * @date 2017年9月29日
 */
public class UnitConvertUtil {

	private static final DecimalFormat df = new DecimalFormat("######0.00");
	private static final DecimalFormat df2 = new DecimalFormat("######0.0");
	private static final DecimalFormat df_int = new DecimalFormat("######0");//四舍五入成整数

	/**
	 * 将获取到的大小字符串转换成标准值
	 * 
	 * @param valueUnit
	 *            带单位的数量
	 * @return
	 * @author ServerZhang
	 * @date 2017年9月29日
	 */
	public static Integer convert2Standard(String valueUnit) {
		Integer standard = 0;

		if (StringUtils.isEmpty(valueUnit)) {
			return standard;
		}
		valueUnit = valueUnit.toLowerCase();
		if (valueUnit.endsWith("厘米") || valueUnit.endsWith("cm")) {
			String replaced = valueUnit.replaceAll("[厘米,cm]", "");
			String format = df_int.format(Double.parseDouble(replaced) * 567);
			standard = Integer.parseInt(format);
		} else if (valueUnit.endsWith("毫米") || valueUnit.endsWith("mm")) {
			String replaced = valueUnit.replaceAll("[毫米,mm]", "");
			String format = df_int.format(Double.parseDouble(replaced) * 56.7);
			standard = Integer.parseInt(format);
		} else if (valueUnit.endsWith("字符") || valueUnit.endsWith("char")) {
			String replaced = valueUnit.replaceAll("[字符,char]", "");
			String format = df_int.format(Double.parseDouble(replaced) * 100);
			standard = Integer.parseInt(format);
		} else if (valueUnit.endsWith("磅") || valueUnit.endsWith("pt")) {
			String replaced = valueUnit.replaceAll("[磅,pt]", "");
			String format = df_int.format(Double.parseDouble(replaced) * 20);
			standard = Integer.parseInt(format);
		}
		return standard;
	}

	/**
	 * 将标准值转换成厘米
	 * 
	 * @param standard
	 * @return
	 * @author ServerZhang
	 * @date 2017年9月29日
	 */
	public static String standar2CM(Integer standard) {
		Double value = standard / 567.0;
		return df.format(value) + "厘米";
	}
	public static String standar2CM(Double standard) {
		Double value = standard / 567;
		return df.format(value) + "厘米";
	}

	/**
	 * 将标准值转换成毫米
	 * 
	 * @param standard
	 * @return
	 * @author ServerZhang
	 * @date 2017年9月29日
	 */
	public static String standar2MM(Integer standard) {
		Double value = standard / 56.7;
		return df.format(value) + "毫米";
	}
	public static String standar2MM(Double standard) {
		Double value = standard / 56.7;
		return df.format(value) + "毫米";
	}

	/**
	 * 将标准值转换成字符
	 * 
	 * @param standard
	 * @return
	 * @author ServerZhang
	 * @date 2017年9月29日
	 */
	public static String standar2Char(Integer standard) {
		Double value = standard / 100.0;
		return df.format(value) + "字符";
	}
	public static String standar2Char(Double standard) {
		Double value = standard / 100;
		return df.format(value) + "字符";
	}

	/**
	 * 将标准值转换成磅
	 * 
	 * @param standard
	 * @return
	 * @author ServerZhang
	 * @date 2017年9月29日
	 */
	public static String standar2PT(Integer standard) {
		Double value = standard / 20.0;
		return df.format(value) + "磅";
	}
	public static String standar2PT(Double standard) {
		Double value = standard / 20;
		return df.format(value) + "磅";
	}
	/**
	 * 将标准值转换成行距
	 * 
	 * @param standard
	 * @return
	 * @author ServerZhang
	 * @date 2017年9月29日
	 */
	public static String standar2Row(Integer standard) {
		Double value = standard / 100.0;
		return df.format(value)+"行";
	}
	public static String standar2Row(Double standard) {
		Double value = standard / 100;
		return df.format(value)+"行";
	}
	/**
	 * 将标准值转换成行距倍数
	 * 
	 * @param standard
	 * @return
	 * @author ServerZhang
	 * @date 2017年9月29日
	 */
	public static String standar2RowTimes(Integer standard) {
		Double value = standard / 240.0;
		String result = null;
		if (value.equals(1.0)) {
			result = "单倍行距";
		}else if (value.equals(1.5)) {
			result = "1.5倍行距";
		}else if (value.equals(2.0)) {
			result = "2倍行距";
		}else {
			result = "多倍行距（设置值为 "+df.format(value)+" ）";
		}
		return result;
	}
	public static String standar2RowTimes(Double standard) {
		Double value = standard / 240;
		String result = null;
		if (value.equals(1.0)) {
			result = "单倍行距";
		}else if (value.equals(1.5)) {
			result = "1.5倍行距";
		}else if (value.equals(2.0)) {
			result = "2倍行距";
		}else {
			result = "多倍行距（设置值为 "+df.format(value)+" ）";
		}
		return result;
	}
}
